"""
Case Type   : 修改SSH端口后添加服务器，添加成功
Case Name   : 修改SSH端口后进行添加服务器，添加成功
Create At   : 2025/05/10
Owner       : @l1azzzy
Description :
    1.修改SSH端口
    2.导入服务器
    3.进行连通性检测
    4.恢复环境
Expect      :
    1.成功
    2.成功
    3.成功
    4.成功
History     :
"""

import os
import unittest
from yat.test import Node
from yat.test import macro
from testcase.utils.CommonSH import CommonSH
from testcase.utils.Logger import Logger
from testcase.utils.datakit_api.CommonApi import CommonApi
from testcase.utils.datakit_api.BaseOpsApi import BaseOpsApi

class Tools(unittest.TestCase):
    def setUp(self):
        self.log = Logger()
        self.log.info(f"-----{os.path.basename(__file__)} start-----")
        self.com_sh = CommonSH()
        self.token = self.com_sh.get_token_value(macro.DATAKIT_PASSWD)
        self.log.info(self.token)
        self.assertNotEqual("error", self.token)
        self.com_api = CommonApi(self.token)
        self.base_ops_api = BaseOpsApi(self.token)
        self.pri_node = Node('PrimaryDbUser')
        self.pri_node_root = Node('PrimaryRoot')
        self.server_name = 'test_001'

def test_upload_server():
    # =====================================
    # 第一步：生成测试数据并写入 Excel 文件
    # =====================================
    # 定义变量（模拟动态数据）
    node_ip = "192.168.88.100"  # 假设从其他系统获取的内网IP
    server_data = [
        None,  # 序号占位（自动生成）
        "test_host002",         # 服务器名称
        {Node.ssh_host},                # 内网IP（使用变量）
        {Node.ssh_host},         # 公网IP
        {Node.ssh_port},                   # 端口号
        "",          # 用户名
        {Node.ssh_password},          # 密码
        "否",                   # 是否为管理员
        "性能测试环境",          # 标签
        "自动化测试生成的数据"    # 备注
    ]
    
    # 写入 Excel（使用默认文件路径 servers.xlsx）
    excel_path = ExcelHandler.write_server_data(data=server_data)
    print(f"[INFO] 测试数据已写入文件: {excel_path}")

    # =====================================
    # 第二步：读取数据并调用上传接口
    # =====================================
    # 初始化 API 客户端（替换为实际 API 地址和 Token）
    api_client = HostAPIClient(
        base_url="http://api.yourcompany.com",
        token="your_real_token_here"
    )
    
    # 从 Excel 读取数据
    servers = ExcelHandler.read_server_data(excel_path)
    print(f"[INFO] 读取到 {len(servers)} 条服务器数据")
    
    # 调用上传接口
    print("[INFO] 开始上传服务器数据...")
    response = api_client.upload_hosts(servers)
    
    # 校验结果
    if response.status_code == 200:
        print("[SUCCESS] 上传成功！响应结果:")
        print(response.json())
    else:
        print(f"[ERROR] 上传失败！状态码: {response.status_code}")
        print("错误详情:", response.text)